﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Web.Script.Services;
using BusinnesLayer.LogicBusiness;
using EntitiesLayer.Entities;

namespace ClinicaSanPablo
{
    public partial class BusEmpleado : System.Web.UI.Page
    {
        private static System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        private Empleadobl eBl = new Empleadobl();

        protected void Page_Load(object sender, EventArgs e)
        {
            int page = Convert.ToInt32(Request.QueryString["page"]);
            int limit = Convert.ToInt32(Request.QueryString["rows"]);
            string sidx = Request.QueryString["sidx"].ToString();
            string sord = Request.QueryString["sord"].ToString();

            string apellidoEmpleado = Request.QueryString["apellidoEmpleado"] ?? "";
            string nombreEmpleado = Request.QueryString["nombreEmpleado"] ?? "";

            string datos = GetEmpleados(sidx, sord, page, limit, apellidoEmpleado, nombreEmpleado);
            Response.ContentType = "application/json";
            Response.Write(datos);
            Response.End();
        }

        public string GetEmpleados(string sidx, string sord, int page, int rows, string apellidoEmpleado, string nombreEmpleado)
        {

            if (apellidoEmpleado != "" || nombreEmpleado != "")
            {
                List<Empleado> lista = eBl.ConsultarEmpleados(apellidoEmpleado, nombreEmpleado);
                List<object> lstFilasAfil = new List<object>();

                if (lista.Count > 0)
                {
                    foreach (var empleado in lista)
                    {
                        var filaAfil = new
                        {
                            cell = new string[]
                        {
                            empleado.Documento_emp,
                            empleado.Apellidos_emp,
                            empleado.Nombres_emp,
                            empleado.Email_emp,
                            empleado.Tfijo_emp,
                            empleado.Tcel_emp,     
                            empleado.VDOC_COD_TIP_DOC                                                      
                        }
                        };
                        lstFilasAfil.Add(filaAfil);
                    }

                    int totalPag = (int)Math.Ceiling((decimal)rows / (decimal)lista.Count);
                    var data = new
                    {
                        total = totalPag,
                        // Total de páginas
                        page = page,
                        // Página actual
                        records = lista.Count,
                        // Total de registros (obtenido del modelo)
                        rows = lstFilasAfil
                    };
                    return jsonSerializer.Serialize(data);
                }
                else
                {
                    var data = new
                    {
                        total = 0,
                        // Total de páginas
                        page = 1,
                        // Página actual
                        records = 0,
                        // Total de registros (obtenido del modelo)
                        rows = ""
                    };
                    return jsonSerializer.Serialize(data);
                }
            }
            else {
                var data = new
                {
                    total = 0, 
                    page = 1, 
                    records = 0, 
                    rows = ""
                };
                return jsonSerializer.Serialize(data);
            
            }
          
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public static string VerificarEmpleado(string codigo, string apellidosemp, string nombreemp, string nrodocumentos, string telefono, string celular, string email, string tipdoc)
        {
            try
            {
                int idempleado = 0;
                QuejaReclamobl pBl = new QuejaReclamobl();                
                List<Empleado> lista = pBl.EmpleadoBuscarDni(codigo);
                if (lista.Count > 0)
                {
                    foreach (var empleado in lista)
                    {
                        idempleado = empleado.IEMP_ID_EMPLEADO;
                        apellidosemp = empleado.VEMP_APELLIDOS_EMP;
                        nombreemp = empleado.VEMP_NOMBRES_EMP;
                        nrodocumentos = empleado.VEMP_NRO_DOCUMENTO;
                        telefono = empleado.IEMP_TELEF_FIJO;
                        celular = empleado.IEMP_CELULAR;
                        email = empleado.VEMP_EMAIL;
                        tipdoc = empleado.VDOC_COD_TIP_DOC;
                        // Update
                        Empleadobl objbl = new Empleadobl();
                        Empleado obj = new Empleado();
                        obj.VEMP_APELLIDOS_EMP = apellidosemp;
                        obj.VEMP_NOMBRES_EMP = nombreemp;
                        obj.VEMP_NRO_DOCUMENTO = nrodocumentos;
                        obj.IEMP_TELEF_FIJO = telefono;
                        obj.IEMP_CELULAR = celular;
                        obj.VEMP_EMAIL = email;
                        obj.VDOC_COD_TIP_DOC = tipdoc;
                        objbl.UpdateEmpleados(obj);
                    }
                }
                else {                                         
                    Empleadobl objbl = new Empleadobl();
                    Empleado obj = new Empleado();
                    obj.VEMP_APELLIDOS_EMP = apellidosemp;
                    obj.VEMP_NOMBRES_EMP = nombreemp;
                    obj.VEMP_NRO_DOCUMENTO = nrodocumentos;
                    obj.IEMP_TELEF_FIJO = telefono;
                    obj.IEMP_CELULAR = celular;
                    obj.VEMP_EMAIL = email;
                    obj.VDOC_COD_TIP_DOC = tipdoc;
                    objbl.insertEmpleados(obj);                
                }

                var data = new
                {
                    resultado = true,
                    idempleado = idempleado,
                    apellidosemp = apellidosemp,
                    nombreemp = nombreemp,
                    nrodocumentos = nrodocumentos,
                    telefono = telefono,
                    celular = celular,
                    email = email,
                    tipdoc = tipdoc
                };

                return jsonSerializer.Serialize(data);

            }
            catch (Exception ex)
            {
                var data = new
                {
                    resultado = false
                };
                return jsonSerializer.Serialize(data);
            }
        }


    }
}